from selenium import webdriver
from selenium.webdriver.firefox.options import Options
import base64

def convert_url_to_pdf(url, output_pdf_path):
    # 设置 Firefox 为 headless 模式
    options = Options()
    options.headless = True

    # 启动 Firefox 浏览器
    driver = webdriver.Firefox(options=options)

    try:
        # 导航到指定 URL
        driver.get(url)

        # 使用 Firefox 的 DevTools 打印为 PDF
        driver.execute_script('window.print();')

        # 如果需要可以通过其它方式获取 PDF 数据
        # 将 PDF 保存到文件
        with open(output_pdf_path, "wb") as f:
            pdf_data = driver.execute_script('return window.print();')
            f.write(base64.b64decode(pdf_data))

    finally:
        driver.quit()

# 示例
convert_url_to_pdf('http://example.com', 'output.pdf')
